package com.dshore.messagecenter.service.statistics.impl;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dshore.messagecenter.dao.statistics.QueuePropertyDao;
import com.dshore.messagecenter.service.statistics.QueuePropertyService;
@Service
public class QueuePropertyServiceImpl implements QueuePropertyService {
	@Autowired
	private QueuePropertyDao qpDao;
	/**
	 *  ---横坐标为时间---查询本日的消息发送延迟
	 */
	@Override
	public Map<Object, Object> getTodayDelayByTime() {
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		String riqi=df.format(d);  //2018/08/01 
		List<Map<String, Object>>list=new ArrayList<>();
		Map<Object,Object> m=new HashMap<Object,Object>();
		list=qpDao.getTodayDelayByTime(riqi);
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map map1 =(Map)list.get(i);//这是一个map集合，map集合中有两个元素 
				Object obj1=map1.get("A");
				Object obj2=map1.get("F");
				Double.parseDouble(obj2.toString());
				m.put(obj1, obj2);
			}
		}
		return m;
	}
	
	/**
	 * ---横坐标为主题队列---查询该主题队列在当日的总延迟
	 */
	@Override
	public List<List> getTodayDelayByTopic() {
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		String riqi=df.format(d);  //2018/08/01 
		List<Map<String, Object>>list=new ArrayList<>();
		List<Object> topicLi=new ArrayList<>();
		List<Object> messageLi=new ArrayList<>();
		
		list=qpDao.getTodayDelayByTopic(riqi);
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map map1 =(Map)list.get(i);//这是一个map集合，map集合中有两个元素 
				Object obj1=map1.get("named");
				Object obj2=map1.get("value");
				topicLi.add(obj1);
				messageLi.add(obj2);
			}
		}
		List<List>l =new ArrayList<List>();
		l.add(topicLi);
		l.add(messageLi);
		return l;
	}
	
	/**
	 * 根据时间--根据下拉框中option标签的id来查询近7日的延迟数据
	 * @param optionId
	 * @return
	 */
	@Override
	public List<Map<String, Object>> getWeekDelayByTimeByOption(String optionId) {
		List<Map<String,Object>> list=qpDao.getWeekDelayByTimeByOption( );
		return list;
	}
	
	/**
	 * 根据主题队列--根据下拉框中option标签的id来查询近7日的延迟数据
	 * @param optionId
	 * @return
	 */
	@Override
	public List<List> getWeekDelayByTopicByOption(String optionId) {
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		Calendar c=Calendar.getInstance();
		c.setTime(d);
		c.add(Calendar.DATE, -6);
		Date da=c.getTime();
		String riqi=df.format(d);  //本日2018/08/01 
		String qitian=df.format(da);  //七天前
	
		List<Object> topicLi=new ArrayList<>();
		List<Object> messageLi=new ArrayList<>();
		List<Map<String,Object>> list=qpDao.getWeekDelayByTopicByOption(riqi,qitian);
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map map1 =(Map)list.get(i);//这是一个map集合，map集合中有两个元素 
				Object obj1=map1.get("named");
				Object obj2=map1.get("value");
				topicLi.add(obj1);
				messageLi.add(obj2);
			}
		}
		List<List>l =new ArrayList<List>();
		l.add(topicLi);
		l.add(messageLi);
		return l;
	}
	
	/**
	 * 根据时间--根据下拉框中option标签的id来查询近30日)的延迟数据
	 * @param optionId
	 * @return
	 */
	@Override
	public List<Map<String, Object>> getMonthDelayByTimeByOption(String optionId) {
		List<Map<String,Object>> list=qpDao.getMonthDelayByTimeByOption();
		return list;
	}
	
	/**
	 * 根据主题队列--根据下拉框中option标签的id来查询近30日的延迟数据
	 * @param optionId
	 * @return
	 */
	@Override
	public List<List> getMonthDelayByTopicByOption(String optionId) {
		Date d=new Date();
		DateFormat df=new SimpleDateFormat("yyyy-MM-dd ");
		Calendar c=Calendar.getInstance();
		c.setTime(d);
		c.add(Calendar.DATE, -29);
		Date da=c.getTime();
		String riqi=df.format(d);  //本日2018/08/01 
		String mtian=df.format(da);  //30天前
		List<Object> topicLi=new ArrayList<>();
		List<Object> messageLi=new ArrayList<>();
		List<Map<String,Object>> list=qpDao. getMonthDelayByTopicByOption(riqi,mtian);
		if(list!=null) {
			for(int i=0;i<list.size();i++) {
				Map map1 =(Map)list.get(i);//这是一个map集合，map集合中有两个元素 
				Object obj1=map1.get("named");
				Object obj2=map1.get("value");
				topicLi.add(obj1);
				messageLi.add(obj2);
			}
		}
		List<List>l =new ArrayList<List>();
		l.add(topicLi);
		l.add(messageLi);
		return l;
	}

}
